﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Runtime.InteropServices;

namespace Sped.Sped
{
    /// <summary>
    /// REGISTRO C181: DETALHAMENTO DA CONSOLIDAÇÃO – OPERAÇÕES DE VENDAS – PIS/PASEP
    /// </summary>
    [ClassInterface(ClassInterfaceType.AutoDual)]
    [ProgId("SpedPisCofins.RegC181")]
    [ComVisible(true)]
    public class RegC181 : IBloco
    {
        /// <summary>
        /// Código da Situação Tributária referente ao PIS/PASEP, conforme a Tabela indicada no item 4.3.3.
        /// </summary>
        public string CST_PIS { get; set; }
        /// <summary>
        /// Código fiscal de operação e prestação
        /// </summary>
        public string CFOP { get; set; }
        /// <summary>
        /// Valor do item
        /// </summary>
        public double VL_ITEM { get; set; }
        /// <summary>
        /// Valor do desconto comercial / Exclusão
        /// </summary>
        public double VL_DESC { get; set; }
        /// <summary>
        /// Valor da base de cálculo do PIS/PASEP
        /// </summary>
        public double VL_BC_PIS { get; set; }
        /// <summary>
        /// Alíquota do PIS/PASEP (em percentual)
        /// </summary>
        public double ALIQ_PIS { get; set; }
        /// <summary>
        /// Quantidade – Base de cálculo PIS/PASEP
        /// </summary>
        public double QUANT_BC_PIS { get; set; }
        /// <summary>
        /// Alíquota do PIS/PASEP (em reais)
        /// </summary>
        public double ALIQ_PIS_QUANT { get; set; }
        /// <summary>
        /// Valor do PIS/PASEP
        /// </summary>
        public double VL_PIS { get; set; }
        /// <summary>
        /// Código da conta analítica contábil debitada/creditada
        /// </summary>
        public string COD_CTA { get; set; }


        public override bool ValidaRegistro(ref string Erro)
        {
            var ValidacaoOK = true;
            Erro = "";

            if (string.IsNullOrEmpty(this.CST_PIS))
            {
                Erro += "\r\n* Registro C181 - Código da Situação Tributária referente ao PIS/PASEP não informada.";
                ValidacaoOK = false;
            }

            if (string.IsNullOrEmpty(this.CFOP))
            {
                Erro += "\r\n* Registro C181 - Código fiscal de operação e prestação não informado.";
                ValidacaoOK = false;
            }


            return ValidacaoOK;
        }

        public override string Layout()
        {
            var Linha = string.Empty;

            Linha += "C181" + this.Delimitador;
            Linha += this.CST_PIS.ToString().Trim() + this.Delimitador;
            Linha += this.CFOP.ToString().Trim() + this.Delimitador;
            Linha += this.VL_ITEM.FormatoValorSped(2) + this.Delimitador;
            Linha += this.VL_DESC.FormatoValorSped(2) + this.Delimitador;
            Linha += this.VL_BC_PIS.FormatoValorSped(2) + this.Delimitador;
            Linha += this.ALIQ_PIS.FormatoValorSped(2) + this.Delimitador;
            Linha += this.QUANT_BC_PIS.FormatoValorSped(2) + this.Delimitador;
            Linha += this.ALIQ_PIS_QUANT.FormatoValorSped(2) + this.Delimitador;
            Linha += this.VL_PIS.FormatoValorSped(2) + this.Delimitador;
            Linha += this.COD_CTA.ToString().Trim() + this.Delimitador;

            return Linha.Trim(); 
        }
    }
}
